package com.bsoft.gol.hcs.specialist.service;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import ctd.controller.exception.ControllerException;
import ctd.util.annotation.RpcService;
import org.atag.dao.model.SimplePageInfo;
import com.bsoft.gol.hcs.specialist.bean.qo.FollowUpRouteQo;
import com.bsoft.gol.hcs.specialist.bean.qo.QueryAfterHosRecordQo;
import com.bsoft.gol.hcs.specialist.bean.qo.UpdateAfterAuditStatusQo;
import com.bsoft.gol.hcs.specialist.bean.qo.UpdateAuditStatusQo;
import com.bsoft.gol.hcs.specialist.bean.request.*;
import com.bsoft.gol.hcs.specialist.bean.response.FollowUpRouteDetailResp;
import com.bsoft.gol.hcs.specialist.bean.response.FollowUpRouteResp;
import com.bsoft.gol.hcs.specialist.bean.response.FusAfterHosRecordDTO;
import com.bsoft.gol.hcs.specialist.bean.vo.FollowUpRecordsVO;
import com.bsoft.gol.hcs.specialist.bean.vo.FollowUpRouteVO;
import com.bsoft.gol.hcs.specialist.entity.FollowUpRoute;

import java.util.List;

public interface IFollowUpRouteService {

    /*查询随访路径列表*/
    @RpcService
    PageInfo queryFollowUpRouteList(QueryFollowUpRouteReq queryFollowUpRouteReq) throws ControllerException;

    @RpcService
    FollowUpRouteResp getFollowUpRouteByRouteId(FollowUpBaseReq follow) throws ControllerException;

    /**
     * 更新路径版本信息
     * @param follow
     * @throws ControllerException
     */
    @RpcService
    void updateFollowUpRouteVersion(FollowUpRouteVersionReq follow) throws ControllerException;

    /*保存随访路径*/
    @RpcService
    FollowUpRoute saveFollowUpRoute(SaveFollowUpRouteReq saveFollowUpRouteReq) throws ControllerException;

    /*删除随访路径*/
    @RpcService
    void deleteFollowUpRoute(FollowUpBaseReq deleteFollowUpReq) throws ControllerException;

    /*获取随访路径详情*/
    @RpcService
    List<FollowUpRouteDetailResp> queryFollowUpRouteDetail(FollowUpBaseReq followUpReq) throws ControllerException;

    /*保存随访路径详情*/
    @RpcService
    void saveFollowUpRouteDetail(FollowUpRouteDetailResp saveFollowUpRouteDetail) throws ControllerException;

    /*删除随访路径详情*/
    @RpcService
    void deleteFollowUpRouteDetail(FollowUpBaseReq deleteDetailReq) throws ControllerException;

    /*复制随访路径详细*/
    @RpcService
    void copyFollowUpRouteDetail(FollowUpBaseReq copyDetailReq) throws ControllerException;

    /*获取随访记录详情*/
    @RpcService
    List<JSONObject> getFollowUpRecordsById(String patientId) throws ControllerException;

    /*随访路径启用禁用*/
    @RpcService
    void enableOrDisableRoute(FollowUpBaseReq followUpBaseReq) throws ControllerException;


    /*随访计划审核---院后随访机构路径树查询*/
    @RpcService
    FollowUpTreeListVO getRouteTreeList(DocIdQo docId) throws ControllerException;

    /*随访计划审核---院后随访列表查询*/
    @RpcService
    SimplePageInfo<FusAfterHosRecordDTO> getAfterHosRecord(QueryAfterHosRecordQo qo) throws ControllerException;

    /*随访计划审核---改变审核状态*/
    @RpcService
    void updateAuditStatus(UpdateAfterAuditStatusQo req) throws ControllerException;


    /* 随访计划审核---专病随访机构路径树查询 */
    @RpcService
    FollowUpTreeListVO getDiseaseRouteTreeList(DocIdQo docId) throws ControllerException;


    /*随访计划审核---专病随访列表查询*/
    @RpcService
    SimplePageInfo<FollowUpRecordsVO> getFollowUpRecords(DocIdQo qo) throws ControllerException;


    /*随访计划审核---改变专病审核状态*/
    @RpcService
    void updateDiseasesAuditStatus(UpdateAuditStatusQo req) throws ControllerException;

    @RpcService
    List<FollowUpRouteVO> queryRouteList(FollowUpRouteQo qo);

    @RpcService
    List<FollowUpRoute> queryFusList(AddDocTeamFusAuthorityReq addDocTeamFusAuthorityReq) throws ControllerException;
}
